<?php
// +----------------------------------------------------------------------
// | B5Yii2CMF V3.0 [快捷通用基础管理开发平台]
// +----------------------------------------------------------------------
// | Author: 冰舞 <357145480@qq.com>
// +----------------------------------------------------------------------
declare (strict_types=1);

namespace common\models\system;

use yii\behaviors\TimestampBehavior;
use yii\db\ActiveRecord;

/**
 * This is the model class for table "sys_dict_data".
 *
 * @property int $id 字典编码
 * @property string|null $label 字典标签
 * @property string|null $value 字典键值
 * @property string|null $type 字典类型
 * @property string|null $css_class 样式属性（其他样式扩展）
 * @property string|null $list_class 表格回显样式
 * @property string|null $is_default 是否默认（Y是 N否）
 * @property string|null $status 状态（1正常 0停用）
 * @property int|null $list_sort 字典排序
 * @property string|null $remark 备注
 * @property int|null $create_time 创建时间
 * @property int|null $update_time 更新时间
 */
class DictData extends ActiveRecord
{
    /**
     * {@inheritdoc}
     */
    public static function tableName(): string
    {
        return 'sys_dict_data';
    }

    /**
     * {@inheritdoc}
     */
    public function rules(): array
    {
        return [
            [['value', 'type'], 'required'],

            [['label', 'css_class', 'list_class', 'remark'], 'default', 'value' => ''],
            [['status'], 'default', 'value' => '1'],
            ['is_default', 'default', 'value' => '0'],
            ['list_sort', 'default', 'value' => 10],

            [['label', 'value', 'type', 'css_class', 'list_sort', 'is_default', 'status', 'css_class', 'remark'], 'trim'],

            [['label', 'value'], 'string', 'max' => 128],
            [['css_class', 'list_class', 'type'], 'string', 'max' => 64],
            [['list_sort'], 'integer'],
            [['status', 'is_default'], 'in', 'range' => ['0', '1']],
            ['value', 'unique', 'targetAttribute' => ['type', 'value'], 'message' => '{attribute} {value} 在该字典下已经存在'],
            [['remark'], 'string', 'max' => 255],
            [['create_time', 'update_time'], 'safe'],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels(): array
    {
        return [
            'id' => 'ID',
            'label' => '字典标签',
            'value' => '字典键值',
            'type' => '字典类型',
            'css_class' => '样式属性',
            'list_class' => '表格回显样式',
            'is_default' => '是否默认',
            'status' => '状态',
            'list_sort' => '字典排序',
            'remark' => '备注',
            'create_time' => '创建时间',
            'update_time' => '更新时间',
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function behaviors(): array
    {
        return [
            [
                'class' => TimestampBehavior::class,
                'attributes' => [
                    ActiveRecord::EVENT_BEFORE_INSERT => ['create_time', 'update_time'],
                    ActiveRecord::EVENT_BEFORE_UPDATE => ['update_time'],
                ],
                'value' => function () {
                    return time();
                }
            ]
        ];
    }
}
